#ifndef COMMON_H
#define COMMON_H

#include <QString>
#include <QMetaType>
#include <QSharedPointer>

#define CHANNEL_NUM 2

const int VoltageChannel = 0;
const int CurrentChannel = 1;
const int DataChannelNum = 2;

struct VdsParameter
{
    int testVolt; // 测试电压，单位：V
    int pulseWidth; // 脉冲宽度
    int pulseInterval; // 脉冲间隔

    int probeRate[CHANNEL_NUM]; // 通道探头比率
    double channelCoef[CHANNEL_NUM]; // 通道转换系数
    double zeroPos[CHANNEL_NUM]; // 零点位置
};

struct VdsMeasureData
{
    double vmax; // 最大值
    double vmin; // 最小值
    double vtop; // 平顶值
    double vamp; // 幅度值
    double vrms; // 均方根值
    double pwid; // 正脉宽
    double waveData[8192]; //波形数据
    int waveSize;// 有效数据长度
    bool overflow; // 是否溢出
};

enum VdsError
{
    OpenSuccess, // 示波器连接成功
    OpenFail, // 示波器打开失败
    InitFail, // 示波器初始化失败
    ReadFail, // 数据读取失败
    MeasureFail, // 测量失败，数据不可用
    DataEmpty, // 数据为空
    DataOverflowCh1, // ch1数据溢出
    DataOverflowCh2, // ch2数据溢出
    WaveformTooShort,// 波形点数小于过滤阈值
};

typedef QSharedPointer<VdsParameter> VdsParameterPtr;
typedef QSharedPointer<VdsMeasureData> VdsMeasureDataPtr;

Q_DECLARE_METATYPE(VdsError)
Q_DECLARE_METATYPE(VdsParameter)
Q_DECLARE_METATYPE(VdsMeasureData)
Q_DECLARE_METATYPE(VdsParameterPtr)
Q_DECLARE_METATYPE(VdsMeasureDataPtr)

#endif // COMMON_H
